package co.kr.caja.modelo.fachada;

import java.sql.SQLException;
import java.util.ArrayList;

import co.kr.caja.entidad.UsuarioDTO;
import co.kr.caja.modelo.negocio.UsuarioNegocio;
import co.kr.caja.transversal.DAOFactorySqlServer;

public class UsuarioFachada {

	public void crear(UsuarioDTO usuarioDTO) throws Exception {
		DAOFactorySqlServer daoFactory = new DAOFactorySqlServer();
		UsuarioNegocio usuarioNegocio = new UsuarioNegocio();
		try {
			usuarioNegocio.crear(usuarioDTO, daoFactory.obtenerConexion());
			daoFactory.confirmarTransaccion();
		} catch (SQLException excepcion) {
			daoFactory.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando registrar el usuario.");
		} catch (Exception excepcion) {
			daoFactory.cancelarTransaccion();
			throw excepcion;
		} finally {
			daoFactory.cerrarConexion();
		}
	}

	public void actualizar(UsuarioDTO usuarioDTO) throws Exception {
		DAOFactorySqlServer daoFactory = new DAOFactorySqlServer();
		UsuarioNegocio usuarioNegocio = new UsuarioNegocio();
		try {
			usuarioNegocio.actualizar(usuarioDTO, daoFactory.obtenerConexion());
			daoFactory.confirmarTransaccion();
		} catch (SQLException excepcion) {
			daoFactory.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando actualizar el usuario.");
		} catch (Exception excepcion) {
			daoFactory.cancelarTransaccion();
			throw excepcion;
		} finally {
			daoFactory.cerrarConexion();
		}
	}

	public ArrayList<UsuarioDTO> consultarTodo() throws Exception {
		DAOFactorySqlServer daoFactory = new DAOFactorySqlServer();
		UsuarioNegocio usuarioNegocio = new UsuarioNegocio();
		ArrayList<UsuarioDTO> usuarioDTOLista = null;
		try {
			usuarioDTOLista = usuarioNegocio.consultarTodo(daoFactory.obtenerConexion());
		} catch (SQLException excepcion) {
			daoFactory.cancelarTransaccion();
			throw new Exception("Se ha presentado un problema intentando consultar el usuario.");
		} catch (Exception excepcion) {
			daoFactory.cancelarTransaccion();
			throw excepcion;
		} finally {
			daoFactory.cerrarConexion();
		}
		return usuarioDTOLista;
	}
}
